#include "HttpServer.hpp"
#include <memory>
#include <iostream>
#include "UserManual.hpp"

void httpFunc(int socket)
{
    char buffer[10240];
    ssize_t n = recv(socket, buffer, sizeof(buffer) - 1, 0);
    if (n > 0)
    {
        buffer[n] = '\0';
        std::cout << buffer << "---------------------------------" << std::endl;
        // web服务器收到的是一个http的请求
        // 方法 路径(没有默认\) 协议版本\r\n
        // key-value....
        // \r\n
        // 请求正文(可以没有)

        // 1试着自己手动构建一个http响应
        std::string httpresponse = "HTTP/1.1 200 ok\r\n";  // 协议版本 状态码(比如404) 状态码描述\r\n
        httpresponse += "\r\n";  // 空行
        // 正文
        httpresponse += "<html><h3>hello!</h3></html>";  // 一般不这么写，一般卸载html文件内，这里只是作为测试
        send(socket, httpresponse.c_str(), httpresponse.size(), 0);  // 向客户端(比如浏览器访问此web服务器)
    }
}

int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        User(argv[0]);
        exit(-1);
    }

    std::unique_ptr<HttpServer> server(new HttpServer(atoi(argv[1]), httpFunc));
    server->init();
    server->start();
    return 0;
}